package q1331_arrayRankTransform;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class Solution {
    /*
    用一个数组复制之后排序 然后用hashmap记录每一个数应该的名次
    映射回去即可
     */
    public int[] arrayRankTransform(int[] arr) {
        if (arr.length == 0) return new int[0];
        int[] temp = arr.clone();
        Arrays.sort(temp);
        Map<Integer, Integer> map = new HashMap<>();
        int count = 1;
        map.put(temp[0], count);
        for (int i = 1; i < arr.length; i++) {
            if (temp[i] > temp[i - 1]) ++count;
            map.put(temp[i], count);
        }

        for (int i = 0; i < arr.length; i++) {
            arr[i] = map.get(arr[i]);
        }

        return arr;
    }
}
